package com.skh.string;

/**
 * 检测大写字母
 * created by skh on 2018/9/5
 */
public class DetectCapital {

	/*
	给定一个单词，你需要判断单词的大写使用是否正确。

	我们定义，在以下情况时，单词的大写用法是正确的：

	全部字母都是大写，比如"USA"。
	单词中所有字母都不是大写，比如"leetcode"。
	如果单词不只含有一个字母，只有首字母大写， 比如 "Google"。
	否则，我们定义这个单词没有正确使用大写字母。

	示例 1:

	输入: "USA"
	输出: True
	示例 2:

	输入: "FlaG"
	输出: False
	注意: 输入是由大写和小写拉丁字母组成的非空单词。
	 */

	/*
	这个题目我的思路是，给单词设置一个值，初始值为0，单词中每遇到一个大写字母就把这个值加1，如果小写字母的话就不变，那么只有以下三种情况下大写字母的使用时对的：

	1，那么如果都是小写值就为0,

	2，如果都是大写那么值就是该字符串的长度，

	3，如果值为1，那么看一下首字母是不是大写的，如果是也是对的。

	其他情况就说明使用不对。
	 */

	public boolean detectCapitalUse(String word) {
		int count = 0;
		for (int i = 0; i < word.length(); i++) {
			char c = word.charAt(i);
			if (c >= 'A' && c <= 'Z') {
				count++;
			}
		}

		if (count == 0) {
			return true;
		}

		if (count == word.length()) {
			return true;
		}

		if (count == 1 && (word.charAt(0) >= 'A' && word.charAt(0) <= 'Z')) {
			return true;
		}

		return false;
	}
}
